package com.example.shopingcenter.util;

import android.graphics.Bitmap;
import android.net.Uri;
import android.util.LruCache;

public class ImageCache {
    private LruCache<Uri, Bitmap> memoryCache;

    public ImageCache() {
        // 获取可用内存的最大值，使用内存超出这个值会引起OutOfMemory异常。
        // LruCache通过构造函数传入缓存值，以KB为单位。
        final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);

        // 使用最大可用内存值的1/8作为缓存的大小。
        final int cacheSize = maxMemory / 8;

        memoryCache = new LruCache<Uri, Bitmap>(cacheSize) {
            @Override
            protected int sizeOf(Uri key, Bitmap bitmap) {
                // 重写此方法来返回每个条目的大小，默认返回1。
                return bitmap.getByteCount() / 1024;
            }
        };
    }

    public void addBitmapToMemoryCache(Uri key, Bitmap bitmap) {
        if (getBitmapFromMemCache(key) == null) {
            memoryCache.put(key, bitmap);
        }
    }

    public Bitmap getBitmapFromMemCache(Uri key) {
        return memoryCache.get(key);
    }
}